1. Field of the Invention
This invention relates in general to the field of computer communications and more specifically to an apparatus and method for accelerating TCP/IP client-server connections over an Infiniband™ Architecture fabric.
2. Description of the Related Art
The first computers were stand-alone machines, that is, they loaded and executed application programs one-at-a-time in an order typically prescribed through a sequence of instructions provided by keypunched batch cards or magnetic tape. All of the data required to execute a loaded application program was provided by the application program as input data and execution results were typically output to a line printer. Even though the interface to early computers was cumbersome at best, the sheer power to rapidly perform computations made these devices very attractive to those in the scientific and engineering fields.
The development of remote terminal capabilities allowed computer technologies to be more widely distributed. Access to computational equipment in real-time fostered the introduction of computers into the business world. Businesses that processed large amounts of data, such as the insurance industry and government agencies, began to store, retrieve, and process their data on computers. Special applications were developed to perform operations on shared data within a single computer system.
During the mid 1970's, a number of successful attempts were made to interconnect computers for purposes of sharing data and/or processing capabilities. These interconnection attempts, however, employed special purpose protocols that were intimately tied to the architecture of these computers. As such, the computers were expensive to procure and maintain and their applications were limited to those areas of the industry that heavily relied upon shared data processing capabilities.
The U.S. government, however, realized the power that could be harnessed by allowing computers to interconnect and thus funded research that resulted in what we now know today as the Internet. More specifically, this research provided a series of standards that specify the details of how interconnected computers are to communicate, how to interconnect networks of computers, and how to route traffic over these interconnected networks. This set of standards is known as the TCP/IP Internet Protocol Suite, named after its two predominant protocol standards, Transport Control Protocol (TCP) and Internet Protocol (IP). The use of TCP/IP allows a computer to communicate across any set of interconnected networks, regardless of the underlying native network protocols that are employed by these networks. Once the interconnection problem was solved by TCP/IP, networks of interconnected computers began to crop up in all areas of business.
The ability to easily interconnect computer networks for communication purposes provided the motivation for the development of distributed application programs, that is, application programs that perform certain tasks on one computer connected to a network and certain other tasks on another computer connected to the network. The sophistication of distributed application programs has steadily evolved over more recent years into what we today call the client-server model. According to the model, “client” applications on a network make requests for service to “server” applications on the network. The “server” applications perform the service and return the results of the service to the “client” over the network. In an exact sense, a client and a server may reside on the same computer, but the more common employment of the model finds clients executing on smaller, less powerful, less costly computers connected to a network and servers executing on more powerful, more expensive computers. In fact, the proliferation of client-server applications has resulted in a class of high-end computers being known as “servers” because they are primarily used to execute server applications. Similarly, the term “client machine” is often used to describe a single-user desktop system that executes client applications. Client-server application technology has enabled computer usage to be phased into the business mainstream. Companies began employing interconnected client-server networks to centralize the storage of files, company data, manufacturing data, etc., on servers and allowed employees to access this data via clients. Servers today are sometimes known by the type of services that they perform. For example, a file server provides client access to centralized files and a mail server provides access to a companies electronic mail.
The development of other technologies such as hypertext markup language (HTML) now allows user-friendly representations of data to be transmitted between computers. The advent of HTML-based developments has resulted in an exponential increase in the number of computers that are interconnected because, now, even home-based businesses can develop server applications that provide services accessible over the Internet from any computer equipped with a web browser application (i.e., a web “client”). Furthermore, virtually every computer produced today is sold with web client software. In 1988, only 5,000 computers were interconnected via the Internet. In 1995, under 5 million computers were interconnected via the Internet. But with the maturation of client-server and HTML technologies, presently, over 50 million computers access the Internet. And the growth continues.
Client machines make thousands of requests over the Internet to server sites every second of every day. And every time a request is made to a server, data resulting from the request must be provided to a client over the Internet in accordance with the protocols laid down by TCP/IP. TCP/IP is a layered set of protocols that results in the decomposition of data that to be transmitted over the network into a sequence of packets. The work that is required to break up the data into packets, along with the processing required to ensure that packets arrive at their final destination, is accomplished by the server that provides the data. In fact, one skilled in the art will appreciate that a significant amount of a server's processing resources are burdened with the processing of TCP/IP protocol-related functions rather than processing to provide the services themselves. When a server designates a set of data that is to be transmitted to a client, hundreds to thousands of TCP/IP functions must be executed by the processor within the server to break up the data into packets, and to monitor transmission of the packets to the client. This is a problem that presently plagues the industry because TCP/IP processing is largely viewed as an overhead function, thus precluding servers from exploiting their full processing capabilities for the provision of services. And as the number of computers connected to the Internet continues to grow, the number of client requests to heavily used service providers will only increase.
Therefore, what is needed is an apparatus that enables a server to respond to an increased number of client requests for service without experiencing a commensurate increase in TCP/IP-related processing requirements.
In addition, what is needed is an apparatus that allows a server to offload TCP/IP-related processing functions so that processing resources in the server can emphasize the transfer of data to clients.
Furthermore, what is needed is a means for performing TCP/IP-related functions to transfer data to a client machine, where the functions are provided for by an apparatus apart from a server that generates the data.
Moreover, what is needed is a method for transferring client-server data that does not require a server to perform TCP/IP-related functions in order to transfer the data.